﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class ChangeStateOnEnd : StateMachineBehaviour {
    public State[] StateStartList;
    public State[] StateEndList;
	 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
	override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
        for (int i = 0; i < StateStartList.GetLength(0); i++)
            animator.SetBool(StateStartList[i].s, StateStartList[i].bo);
    }

	// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
	//override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
	override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
        for (int i=0;i< StateEndList.GetLength(0);i++)
        animator.SetBool(StateEndList[i].s, StateEndList[i].bo);

    }

	// OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
	//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}

	// OnStateIK is called right after Animator.OnAnimatorIK(). Code that sets up animation IK (inverse kinematics) should be implemented here.
	//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
	//
	//}
    [Serializable]
    public class State
    {
        public string s;
        public bool bo;
    }
}
